desg segment dieci dw 0ah mes1"che operazione vuoi eseguire?"$ mes2"1=somma",0ah,0dh,"2=sottrazione",0ah,0dh,"3=moltiplicazione",0ah,0dh,"4=divisione","$" dseg ends sseg segment para stack 'stack' top dw 10 dup (?) sseg ends cseg segment assume ds:desg;cs:cesg;ss:sesg numero proc ;funsione sull inserimento di un numero a 3 cifre mov cx,3 mov bx,0 ciclo: mov ah,01h int 21h cmp al,0dh je fine push ax mov ax,bx mul dieci mov bx,ax pop ax sub al,30h mov ah,0 add bx,ax loop ciclo fine: ret numero endp start: mov ax, dseg mov ds, ax lea dx,mes2 ;vinene visualizzato il menù mov ah,09h int 21h lea dx,mes1 ;viene visualizzato il messaggio del operazione che si vuole effettuare mov ah,09h int 21h mov ah,01h ;inserimento di un numero da tastiera int 21h cmp ah,1 ;se viene inserito 1 je somma ;vai all'addizione cmp ah,2 ;se viene inserito 2 je sott ;vai alla sottrazione cmp ah,3 ;se viene inserito 3 je molt ;vai alla moltiplicazione cmp ah,4 ;se viene inserito 4 je divi ;vai alla divisione somma:call numero ;addizione push bx call numero pop ax add ax,bx jmp fine sott:call numero ;sottrazione push bx call numero pop ax sub ax,bx jmp fine molt:call numero ;moltiplicazione push bx call numero pop ax mul bx jmp fine divi:call numero ;divisione push bx call numero pop ax div bx jmp fine fine: mov cl,0 sta: mov dx,0 div dieci push dx inc cl cmp ax,0 jne sta rip: pop dx add dl,30h mov ah,02h int 21h dec cl jnz rip mov ah,4ch int 21h cseg ends end start